package edu.zut.cs.network.Experiment5;

import org.apache.log4j.*;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Set;

public class MinIndex {
    private static Logger logger = Logger.getLogger(MinIndex.class);
    public static Set minIndex(int[] list) {
        int num;
        Set set = new HashSet();
//        int[] numbe = new int[];
        int[] ar = Arrays.copyOf(list,list.length);
//        System.arraycopy(list,0,ar,0,list.length);
// java中数组是被当作对象看待，假设a，b为两个已经初始化的数组，那么语句a=b就表示把b数组对象的引用赋值给a，
// 那么a和b就指向了同一个数组，无论用哪个来操作都影响其指向的数组。原来a指向的数组现在无法获取。
//如果要拷贝数组b到一个新的数组a中，使得a得到数组b的所有数据而又是不是b本身，
// System提供了一个静态方法arraycopy(),我们可以使用它来实现数组之间的复制。
        for (int i = 1; i < list.length; i++) {
            if (list[i-1] < list[i]) {
                list[i-1] = (list[i-1]) ^ (list[i]);
                list[i] = (list[i-1]) ^ (list[i]);
                list[i-1] = (list[i-1]) ^ (list[i]);
               /* int temp;
                temp = list[i];
                list[i] = list[i-1];
                list[i-1] = temp;*/
            }
        }
//        logger.info(Arrays.toString(ar));
//        logger.info(Arrays.toString(list));
        for (num = 0; num < ar.length; num++) {
            if (ar[num] == list[list.length - 1]) {
                num++;
                set.add(num);
//                break;
            }
        }
        return set;
    }
    public static void main(String[] args) {
        logger.info("请给这个数组赋值，数值之间以空格隔开:");
        Scanner input = new Scanner(System.in);
        String str1 = input.nextLine();  //输入数组，把所有输元素看成是一串字符
        String[] str2 = str1.split("[ ]+");//以空格进行分割str1，分割之后的每个元素一次赋值给字符串数组str2。
        int[] str = new int[str2.length];
        for(int i = 0; i < str.length;i++){
            str[i] = Integer.parseInt(str2[i]);//String型转化为int型
        }
//        int[] ar = new int[]{1,2,3,6,98,54,4};
        Set number = MinIndex.minIndex(str);
        logger.info("该整数数组中最小值的位置为："+number);
    }
}
